iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
Mobile Development

[Android Studio & Spring boot 30天挑戰]系列 第 26

[Android Studio & Spring boot 30天挑戰] Day26- Spring boot 傳送 mail

  • 分享至 

  • xImage
  •  

今天,要介紹的是在 Spring Boot 應用程序中實現郵件發送功能。郵件發送對於許多應用程序來說都是一個重要的功能,它可以用於註冊驗證、密碼重置、通知等各種用途!!/images/emoticon/emoticon08.gif

首先我們要到 build.gradle 加入依賴。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>3.1.1</version>
</dependency>

這理這個方法是使用 @Bean 注解,將一個 JavaMailSender 的實例註冊為 Spring Bean。這個 JavaMailSender 將用於發送郵件。

@Bean
public JavaMailSender getJavaMailSender() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setHost("smtp.gmail.com"); // 設定郵件伺服器的主機名稱
    mailSender.setPort(587); // 設定郵件伺服器的通信端口號

    mailSender.setUsername("eson10200@gmail.com"); // 設定郵箱的使用者名稱
    mailSender.setPassword(""); // 設定郵箱的密碼

    Properties props = mailSender.getJavaMailProperties();
    props.put("mail.transport.protocol", "smtp"); // 設定郵件傳輸協議為 SMTP
    props.put("mail.smtp.auth", "true"); // 啟用 SMTP 驗證
    props.put("mail.smtp.starttls.enable", "true"); // 啟用 STARTTLS 加密通信
    props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); // 信任 Gmail 的 SSL 憑證

    return mailSender;
}

這個方法使用SimpleMailMessage對象來設定郵件的收件人地址、主題和內容,然後使用javaMailSender發送郵件。當這個端點被訪問時,它將返回一個成功的消息,表示郵件已成功發送。

@PostMapping(value = "/mail")
public String sendSimpleMail() {
    // 創建一個SimpleMailMessage對象,用於設定郵件內容。
    SimpleMailMessage message = new SimpleMailMessage();

    // 設定郵件的接收者地址。
    message.setTo("eson10200@gmail.com");

    // 設定郵件主題。
    message.setSubject("測試透過 Gmail 去發信");

    // 設定郵件內容。
    message.setText("測試 Gmail 發信。");

    // 使用JavaMailSender發送郵件。
    javaMailSender.send(message);

    // 返回一個成功的消息,表示郵件已經成功發送。
    return "發送成功";
}

設定完成後我們就可以用 Postman 打 API,但當你打完後會發現失敗並且報了一長串的錯誤,這是因為我們沒有認證 gmail ,這時我要到 google 帳號設定,先點進安全性裡的兩步驟驗證

https://ithelp.ithome.com.tw/upload/images/20230828/20150369kpV38LeUdf.png

在滑到最底下,點進應用程式密碼

https://ithelp.ithome.com.tw/upload/images/20230828/201503690CmArfLlM3.png

填入密碼名稱後,就可以按下產生。

https://ithelp.ithome.com.tw/upload/images/20230828/201503692Ut3M62KcG.png

最後就可以複製密碼填入到上面,getJavaMailSender裡的setPassword。

mailSender.setPassword("");

再來測試一次使用 Postman 打 API 去 gmail 看有沒有收到信件!!!!

https://ithelp.ithome.com.tw/upload/images/20230828/20150369mVDa1QiS0I.png


上一篇
[Android Studio & Spring boot 30天挑戰] Day25 - API 各種資料傳遞方式
下一篇
[Android Studio & Spring boot 30天挑戰] Day27- Docker 介紹
系列文
[Android Studio & Spring boot 30天挑戰]30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言